package com.thenie.pojo;


import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map;

public class Cart {
    private Map<Integer,CartItem> map=new LinkedHashMap<>();

    /**
     * 添加到购物车一本图书
     * @param cartItem
     */
    public void add(CartItem  cartItem){
        CartItem item = map.get(cartItem.getId());
        if(item!=null){
            int count = item.getCount()+1;
            item.setCount(count);
        }else {
            cartItem.setCount(1);
            map.put(cartItem.getId(),cartItem);
        }
    }

    /**
     * 删除图书
     * @param id
     */
    public void delete(int id ){
        map.remove(id);
    }

    /**
     * 清除购物车
     */
    public void clear(){
        map.clear();
    }

    /**
     * 修改购买图书数量
     * @param id
     * @param count
     */
    public void updateCount(int id,int count){
        map.get(id).setCount(count);
    }

    public Cart() {
    }

    public Cart(Map<Integer, CartItem> map) {
        this.map = map;
    }

    public Integer getTotalCount(){
        Integer totalCount =0;
        for(Map.Entry<Integer, CartItem> entry:map.entrySet()){
            totalCount+=entry.getValue().getCount();
        }
        return totalCount;
    }

    public BigDecimal getTotalPrice(){
        BigDecimal totalPrice = new BigDecimal(0);
        for(Map.Entry<Integer,CartItem> entry:map.entrySet()){
            totalPrice=totalPrice.add(entry.getValue().getTotalPrice());
        }
        return totalPrice;
    }

    public Map<Integer, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<Integer, CartItem> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Cart{" +
                "totalCount="+getTotalCount()+
                ",totalPrice="+getTotalPrice()+
                ",map=" + map +
                '}';
    }
}
